complex computer algorithms